home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / perl5a1.lha / perl5alpha1 / do / gnent < prev    next >
Encoding:
Text File  |  1992-08-15  |  1.5 KB  |  65 lines

  1. int
  2. do_gnent(which,gimme,arglast)
  3. int which;
  4. int gimme;
  5. int *arglast;
  6. {
  7.     register ARRAY *ary = stack;
  8.     register int sp = arglast[0];
  9.     register char **elem;
  10.     register STR *TARG;
  11.     struct netent *getnetbyname();
  12.     struct netent *getnetbyaddr();
  13.     struct netent *getnetent();
  14.     struct netent *nent;
  15.  
  16.     if (which == O_GNBYNAME) {
  17.     char *name = str_get(ary->ary_array[sp+1]);
  18.  
  19.     nent = getnetbyname(name);
  20.     }
  21.     else if (which == O_GNBYADDR) {
  22.     unsigned long addr = U_L(str_gnum(ary->ary_array[sp+1]));
  23.     int addrtype = (int)str_gnum(ary->ary_array[sp+2]);
  24.  
  25.     nent = getnetbyaddr((long)addr,addrtype);
  26.     }
  27.     else
  28.     nent = getnetent();
  29.  
  30.     if (gimme != G_ARRAY) {
  31.     astore(ary, ++sp, TARG = str_mortal(&str_undef));
  32.     if (nent) {
  33.         if (which == O_GNBYNAME)
  34.         str_numset(TARG, (double)nent->n_net);
  35.         else
  36.         str_set(TARG, nent->n_name);
  37.     }
  38.     return sp;
  39.     }
  40.  
  41.     if (nent) {
  42. #ifndef lint
  43.     (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
  44.     str_set(TARG, nent->n_name);
  45.     (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
  46.     for (elem = nent->n_aliases; *elem; elem++) {
  47.         str_cat(TARG, *elem);
  48.         if (elem[1])
  49.         str_ncat(TARG," ",1);
  50.     }
  51.     (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
  52.     str_numset(TARG, (double)nent->n_addrtype);
  53.     (void)astore(ary, ++sp, TARG = str_mortal(&str_no));
  54.     str_numset(TARG, (double)nent->n_net);
  55. #else /* lint */
  56.     elem = Nullch;
  57.     elem = elem;
  58.     (void)astore(ary, ++sp, str_mortal(&str_no));
  59. #endif /* lint */
  60.     }
  61.  
  62.     return sp;
  63. }
  64.  
  65.